<template>
  <!--  在使用上传组件的时候,我们需要传递两个属性, 子组件内部会接收 -->
  <upload-excel :on-success="handleSuccess" :before-upload="beforeUpload" />
</template>

<script>
import { reqImportEmployee } from '@/api/employee'
export default {
  name: 'Import',
  computed: {
    type() {
      return this.$route.query.type // 获取路由信息对象携带的参数
    }
  },
  methods: {
    // 上传前
    beforeUpload(file) {
      // file就是上传的文件对象, 我们可以在上传前对这个文件进行预校验
      // 文件类型  文件大小
      // 如果return true 才能上传  return false 阻止上传
      // console.log(file)
      // const isLt1M = file.size / 1024 / 1024 < 1
      // if (isLt1M) {
      //   return true
      // }
      // this.$message({
      //   message: 'Please do not upload files larger than 1m in size.',
      //   type: 'warning'
      // })
      return true
    },
    // 上传成功 触发的函数,函数中有一个参数对象,对象中有两个字段  header 和 results
    async handleSuccess(obj) {
      // header 表示的是上传的文件表格的标题, 是一个数组
      // results 表示的是上传的文件表格的内容, 是一个数组
      // console.log(obj.header)
      // console.log(obj.results) // 上传的数据格式要求是数组包对象的格式results就是数组包对象的
      // 在发送请求之前要处理对着中的key 中文转英文
      if (this.type === 'user') {
        // 翻译的规则
        const userRelations = {
          '入职日期': 'timeOfEntry',
          '手机号': 'mobile',
          '姓名': 'username',
          '转正日期': 'correctionTime',
          '工号': 'workNumber'
        }
        const result = obj.results.map(item => {
        // console.log(item) // 每一项
          const obj = {}
          for (const k in item) {
          // console.log(k) // 中文key 入职日期
          // console.log(userRelations[k]) // 英文key
            const englishKey = userRelations[k] // 将对象转换为应为的key和原来的值
            // console.log(item[k]) // excel中的时间
            // 将需要转换的时间处理后再赋值
            if (['timeOfEntry', 'correctionTime'].includes(englishKey)) {
            // console.log(this.formatExcelDate(item[k], '-'))
              obj[englishKey] = this.formatExcelDate(item[k], '-')
            } else {
            // 不需要转换直接赋值
              obj[englishKey] = item[k]
            }
          }
          // console.log(obj) // 英文key对象
          return obj // 将转换好的对象收集到数组中
        })
        // console.log(result)
        // 发送请求批量导入员工列表的请求
        const { message } = await reqImportEmployee(result)
        this.$message.success(message)
      }
      if (this.type === 'salary') {
        // 关于工资表格的上传的业务
      }
      if (this.type === 'social') {
        // 关于社保表格的上传的业务
      }
      // 路由回退
      this.$router.back()
    },
    // 处理excel时间问题的函数, excel 1900-01-01开始  计算机是 1970-01-01
    formatExcelDate(numb, format) { // 参数一是要处理的时间,参数2 是返回时间格式的分隔符 -
      const time = new Date((numb - 1) * 24 * 3600000 + 1) // 毫秒
      time.setYear(time.getFullYear() - 70)
      const year = time.getFullYear() + ''
      const month = time.getMonth() + 1 + ''
      const date = time.getDate() - 1 + ''
      if (format && format.length === 1) {
        return year + format + (month < 10 ? '0' + month : month) + format + (date < 10 ? '0' + date : date)
      }
      return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
    }
  }
}
</script>

<style>

</style>
